home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / u_man / cat1 / perfex.z / perfex
Encoding:
Text File  |  2001-04-17  |  31.2 KB  |  661 lines

  1.  
  2.  
  3.  
  4. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ppppeeeerrrrffffeeeexxxx - Command line interface to processor event counters
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ppppeeeerrrrffffeeeexxxx [----aaaa | ----eeee _e_v_e_n_t_0 [----eeee _e_v_e_n_t_1]] [----mmmmpppp | ----ssss | ----pppp] [----xxxx] [----kkkk] [----yyyy] [----tttt]
  13.      [----TTTT] [----oooo _f_i_l_e] [----cccc _f_i_l_e] _c_o_m_m_a_n_d
  14.  
  15.  
  16. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  17.      The given _c_o_m_m_a_n_d is executed; after it is complete, _p_e_r_f_e_x prints the
  18.      values of various hardware performance counters.  The counts returned are
  19.      aggregated over all processes that are descendants of the target command,
  20.      as long as their parent process controls the child through wwwwaaaaiiiitttt (see
  21.      wwwwaaaaiiiitttt(2)).
  22.  
  23.      The R10000 event counters are different from R12000 event counters.  See
  24.      the rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5) man page for differences.  For R10000 CPUs, the
  25.      integers _e_v_e_n_t_0 and _e_v_e_n_t_1 index the following table:
  26.           0 = Cycles
  27.           1 = Issued instructions
  28.           2 = Issued loads
  29.           3 = Issued stores
  30.           4 = Issued store conditionals
  31.           5 = Failed store conditionals
  32.           6 = Decoded branches.  (This changes meaning in 3.x
  33.                  versions of R10000.  It becomes resolved branches).
  34.           7 = Quadwords written back from secondary cache
  35.           8 = Correctable secondary cache data array ECC errors
  36.           9 = Primary (L1) instruction cache misses
  37.           10 = Secondary (L2) instruction cache misses
  38.           11 = Instruction misprediction from secondary cache way prediction table
  39.           12 = External interventions
  40.           13 = External invalidations
  41.           14 = Virtual coherency conditions.  (This changes meaning in 3.x
  42.                  versions of R10000.  It becomes ALU/FPU forward progress
  43.                  cycles.  On the R12000, this counter is always 0).
  44.           15 = Graduated instructions
  45.           16 = Cycles
  46.           17 = Graduated instructions
  47.           18 = Graduated loads
  48.           19 = Graduated stores
  49.           20 = Graduated store conditionals
  50.           21 = Graduated floating point instructions
  51.           22 = Quadwords written back from primary data cache
  52.           23 = TLB misses
  53.           24 = Mispredicted branches
  54.           25 = Primary (L1) data cache misses
  55.           26 = Secondary (L2) data cache misses
  56.           27 = Data misprediction from secondary cache way prediction table
  57.           28 = External intervention hits in secondary cache (L2)
  58.           29 = External invalidation hits in secondary cache
  59.           30 = Store/prefetch exclusive to clean block in secondary cache
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  71.  
  72.  
  73.  
  74.           31 = Store/prefetch exclusive to shared block in secondary cache
  75.  
  76.      For R12000 CPUs, the integers _e_v_e_n_t_0 and _e_v_e_n_t_1 index the following
  77.      table:
  78.           0 = Cycles
  79.           1 = Decoded instructions
  80.           2 = Decoded loads
  81.           3 = Decoded stores
  82.           4 = Miss handling table occupancy
  83.           5 = Failed store conditionals
  84.           6 = Resolved conditional branches
  85.           7 = Quadwords written back from secondary cache
  86.           8 = Correctable secondary cache data array ECC errors
  87.           9 = Primary (L1) instruction cache misses
  88.           10 = Secondary (L2) instruction cache misses
  89.           11 = Instruction misprediction from secondary cache way prediction table
  90.           12 = External interventions
  91.           13 = External invalidations
  92.           14 = ALU/FPU progress cycles.  (This counter in current versions of R12000
  93.                  is always 0).
  94.           15 = Graduated instructions
  95.           16 = Executed prefetch instructions
  96.           17 = Prefetch primary data cache misses
  97.           18 = Graduated loads
  98.           19 = Graduated stores
  99.           20 = Graduated store conditionals
  100.           21 = Graduated floating-point instructions
  101.           22 = Quadwords written back from primary data cache
  102.           23 = TLB misses
  103.           24 = Mispredicted branches
  104.           25 = Primary data cache misses
  105.           26 = Secondary data cache misses
  106.           27 = Data misprediction from secondary cache way prediction table
  107.           28 = State of intervention hits in secondary cache (L2)
  108.           29 = State of invalidation hits in secondary cache
  109.           30 = Store/prefetch exclusive to clean block in secondary cache
  110.           31 = Store/prefetch exclusive to shared block in secondary cache
  111.  
  112. BBBBAAAASSSSIIIICCCC OOOOPPPPTTTTIIIIOOOONNNNSSSS
  113.      ----eeee _e_v_e_n_t          Specify an event to be counted.
  114.  
  115.                        2, 1, or 0 event specifiers may be given, the default
  116.                        events being to count cycles.  Events may also be
  117.                        specified by setting one or both of the environment
  118.                        variables TTTT5555____EEEEVVVVEEEENNNNTTTT0000 and TTTT5555____EEEEVVVVEEEENNNNTTTT1111. Command line event
  119.                        specifiers, if present, override the environment
  120.                        variables. The order of events specified is not
  121.                        important.  The counts, together with an event
  122.                        description, are written to ssssttttddddeeeerrrrrrrr unless redirected
  123.                        with the ----oooo option. Two events that mmmmuuuusssstttt be counted on
  124.                        the same hardware counter (see rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5)) will
  125.                        cause a conflicting counters error.
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  137.  
  138.  
  139.  
  140.      ----aaaa                Multiplexes over all events, projecting totals. Ignores
  141.                        event specifiers.
  142.  
  143.                        The option ----aaaa produces counts for all events by
  144.                        multiplexing over 16 events per counter. The OS does
  145.                        the switching round robin at clock interrupt
  146.                        boundaries. The resulting counts are normalized by
  147.                        multiplying by 16 to give an estimate of the values
  148.                        they would have had for exclusive counting. Due to the
  149.                        equal-time nature of the multiplexing, events present
  150.                        in large enough numbers to contribute significantly to
  151.                        the execution time will be fairly represented. Events
  152.                        concentrated in a few short regions (for instance,
  153.                        instruction cache misses) may not be projected very
  154.                        accurately.
  155.  
  156.  
  157.      ----mmmmpppp               Report per-thread counts for multiprocessing programs
  158.                        as well as (default) totals.
  159.  
  160.                        By default, ppppeeeerrrrffffeeeexxxx aggregates the counts of all the
  161.                        child threads and reports this number for each selected
  162.                        event. The ----mmmmpppp option causes the counters for each
  163.                        thread to be collected at thread exit time and printed
  164.                        out; the counts aggregated across all threads are
  165.                        printed next.  The per-thread counts are labeled by
  166.                        process ID (pid).
  167.  
  168.  
  169.  
  170.      ----oooo _f_i_l_e           Redirects ppppeeeerrrrffffeeeexxxx output to the specified file.
  171.  
  172.                        In the ----mmmmpppp case, the file name includes the pid of the
  173.                        sssspppprrrroooocccc child thread.
  174.  
  175.  
  176.      ----ssss                Starts (or stops) counting when a SSSSIIIIGGGGUUUUSSSSRRRR1111 (or SSSSIIIIGGGGUUUUSSSSRRRR2222)
  177.                        signal is received by a ppppeeeerrrrffffeeeexxxx process.
  178.  
  179.  
  180.      ----pppp _p_e_r_i_o_d         Profiles (samples) the counters with the given period.
  181.  
  182.                        This option causes ppppeeeerrrrffffeeeexxxx to wait until it (i.e., the
  183.                        ppppeeeerrrrffffeeeexxxx process) receives a SSSSIIIIGGGGUUUUSSSSRRRR1111 before it starts
  184.                        counting (for the child process, the target). It will
  185.                        stop counting if it receives a SSSSIIIIGGGGUUUUSSSSRRRR2222. Repeated cycles
  186.                        of this will aggregate counts. If no SSSSIIIIGGGGUUUUSSSSRRRR2222 is
  187.                        received (the usual case), the counting will continue
  188.                        until the child exits.  Note that counting for
  189.                        descendants of the child will not be affected, meaning
  190.                        counting for mp programs cannot be controlled with this
  191.                        option.
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  203.  
  204.  
  205.  
  206.      ----xxxx                Counts at exception level (as well as the default user
  207.                        level).
  208.  
  209.                        Exception level includes time spent on behalf of the
  210.                        user during, for example, TLB refill exceptions.  Other
  211.                        counting modes (kernel, supervisor) are available
  212.                        through the OS iiiiooooccccttttllll interface (see rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5) ).
  213.  
  214.  
  215.      ----kkkk                Counts at kernel level (as well as user and exception
  216.                        level, if set), program superuser privileges.
  217.  
  218.  
  219. EEEEXXXXAAAAMMMMPPPPLLLLEEEE
  220.      To collect instruction and data secondary cache miss counts on a program
  221.      normally executed by
  222.  
  223.         % bar < bar.in > bar.out
  224.  
  225.       would be accomplished by
  226.  
  227.         % perfex -e 26 -e 10 bar < bar.in > bar.out .
  228.  
  229.  
  230.  
  231. CCCCOOOOSSSSTTTT EEEESSSSTTTTIIIIMMMMAAAATTTTEEEE OOOOPPPPTTTTIIIIOOOONNNNSSSS
  232.      ----yyyy   Report statistics and ranges of estimated times per event.
  233.  
  234.           Without the ----yyyy option, ppppeeeerrrrffffeeeexxxx reports the counts recorded by the
  235.           event counters for the events requested. Since they are simply raw
  236.           counts, it is difficult to know by inspection which events are
  237.           responsible for significant portions of the job's run time. The ----yyyy
  238.           option associates time cost with some of the event counts.
  239.  
  240.           The reported times are approximate.  Due to the superscalar nature
  241.           of the R10000 and R12000 CPUs, and their ability to hide latency,
  242.           stating a precise cost for a single occurrence of many of the events
  243.           is not possible. Cache misses, for example, can be overlapped with
  244.           other operations, so there is a wide range of times possible for any
  245.           cache miss.
  246.  
  247.           To account for the fact that the cost of many events cannot be known
  248.           precisely, ppppeeeerrrrffffeeeexxxx ----yyyy reports a range of time costs for each event.
  249.           "Maximum," "minimum," and "typical" time costs are reported. Each is
  250.           obtained by consulting an internal table that holds the maximum,
  251.           minimum, and typical costs for each event, and multiplying this cost
  252.           by the count for the event. Event costs are usually measured in
  253.           terms of machine cycles, and so the cost of an event generally
  254.           depends on the clock speed of the processor, which is also reported
  255.           in the output.
  256.  
  257.           The maximum value contained in the table corresponds to the worst
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  269.  
  270.  
  271.  
  272.           case cost of a single occurrence of the event. Sometimes this can be
  273.           a very pessimistic estimate. For example, the maximum cost for
  274.           graduated floating-point instructions assumes that all such
  275.           instructions are double precision reciprocal square roots, since
  276.           that is the most costly floating-point instruction.
  277.  
  278.           Due to the latency-hiding capabilities of the CPUs, the minimum cost
  279.           of virtually any event could be zero, since most events can be
  280.           overlapped with other operations. To avoid simply reporting minimum
  281.           costs of 0, which would be of no practical use, the minimum time
  282.           reported by ppppeeeerrrrffffeeeexxxx ----yyyy corresponds to the "best case" cost of a
  283.           single occurrence of the event. The best case cost is obtained by
  284.           running the maximum number of simultaneous occurrences of that event
  285.           and averaging the cost. For example, two floating-point instructions
  286.           can complete per cycle, so the best case cost on the R10000 is 0.5
  287.           cycles per floating-point instruction.
  288.  
  289.           The typical cost falls somewhere between minimum and maximum and is
  290.           meant to correspond to the cost one would expect to see in average
  291.           programs. For example, to measure the typical cost of a cache miss,
  292.           stride-1 accesses to an array too big to fit in cache were timed,
  293.           and the number of cache misses generated was counted. The same
  294.           number of stride-1 accesses to an in-cache array were then timed.
  295.           The difference in times corresponds to the cost of the cache misses,
  296.           and this was used to calculate the average cost of a cache miss.
  297.           This typical cost is lower than the worst case in which each cache
  298.           miss cannot be overlapped, and it is higher than the best case, in
  299.           which several independent, and hence, overlapping, cache misses are
  300.           generated.  (Note that on Origin systems, this methodology yields
  301.           the time for secondary cache misses to local memory only.)
  302.           Naturally, these typical costs are somewhat arbitrary.  If they do
  303.           not seem right for the application being measuring by ppppeeeerrrrffffeeeexxxx, they
  304.           can be replaced by user-supplied values. See the ----cccc option below.
  305.  
  306.           ppppeeeerrrrffffeeeexxxx ----yyyy prints the event counts and associated cost estimates
  307.           sorted from most costly to least costly. While resembling a
  308.           profiling output, it is not a true profile. The event costs reported
  309.           are only estimates. Furthermore, since events do overlap with each
  310.           other, the sum of the estimated times will usually exceed the
  311.           program's run time.  This output should only be used to identify
  312.           which events are responsible for significant portions of the
  313.           program's run time and to get a rough idea of what those costs might
  314.           be.
  315.  
  316.           With this in mind, the built-in cost table does not make an attempt
  317.           to provide detailed costs for all events. Some events provide
  318.           summary or redundant information. These events are assigned minimum
  319.           and typical costs of 0, so that they sort to the bottom of the
  320.           output.  The maximum costs are set to 1 cycle, so that you can get
  321.           an indication of the time corresponding to these events.  Issued
  322.           instructions and graduated instructions are examples of such events.
  323.           In addition to these summary or redundant events, detailed cost
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  335.  
  336.  
  337.  
  338.           information has not been provided for a few other events, such as
  339.           external interventions and external invalidations, since it is
  340.           difficult to assign costs to these asynchronous events. The built-in
  341.           cost values may be overridden by user-supplied values using the ----cccc
  342.           option.
  343.  
  344.           In addition the event counts and cost estimates, ppppeeeerrrrffffeeeexxxx ----yyyy also
  345.           reports a number of statistics derived from the typical costs. The
  346.           meaning of many of the statistics is self-evident (for example,
  347.           graduated instructions/cycle). The following are statistics whose
  348.           definitions require more explanation.  These are available with both
  349.           R10000 and R12000 CPUs.
  350.  
  351.  
  352.      Data mispredict/Data secondary cache hits
  353.  
  354.           This is the ratio of the counts for data misprediction from
  355.           secondary cache way prediction table and secondary data cache
  356.           misses.
  357.  
  358.  
  359.      Instruction mispredict/Instruction secondary cache hits
  360.  
  361.           This is the ratio of the counts for instruction misprediction from
  362.           secondary cache way prediction table and secondary instruction cache
  363.           misses.
  364.  
  365.  
  366.      Primary cache line reuse
  367.  
  368.           The is the number of times, on average, that a primary data cache
  369.           line is used after it has been moved into the cache. It is
  370.           calculated as graduated loads plus graduated stores minus primary
  371.           data cache misses, all divided by primary data cache misses.
  372.  
  373.  
  374.      Secondary Cache Line Reuse
  375.  
  376.           The is the number of times, on average, that a secondary data cache
  377.           line is used after it has been moved into the cache. It is
  378.           calculated as primary data cache misses minus secondary data cache
  379.           misses, all divided by secondary data cache misses.
  380.  
  381.      Primary Data Cache Hit Rate
  382.  
  383.           This is the fraction of data accesses that are satisfied from a
  384.           cache line already resident in the primary data cache. It is
  385.           calculated as 1.0 - (primary data cache misses divided by the sum of
  386.           graduated loads and graduated stores).
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  401.  
  402.  
  403.  
  404.      Secondary Data Cache Hit Rate
  405.  
  406.           This is the fraction of data accesses that are satisfied from a
  407.           cache line already resident in the secondary data cache. It is
  408.           calculated as 1.0 - (secondary data cache misses divided by primary
  409.           data cache misses).
  410.  
  411.      Time accessing memory/Total time
  412.  
  413.           This is the sum of the typical costs of graduated loads, graduated
  414.           stores, primary data cache misses, secondary data cache misses, and
  415.           TLB misses, divided by the total program run time. The total program
  416.           run time is calculated by multiplying cycles by the time per cycle
  417.           (the inverse of the processor's clock speed).
  418.  
  419.      Primary-to-secondary bandwidth used (MB/s, average per process)
  420.  
  421.           This is the amount of data moved between the primary and secondary
  422.           data caches, divided by the total program run time. The amount of
  423.           data moved is calculated as the sum of the number of primary data
  424.           cache misses multiplied by the primary cache line size and the
  425.           number of quadwords written back from primary data cache multiplied
  426.           by the size of a quadword (16 bytes).  For multiprocess programs,
  427.           the resulting figure is a per-process average, since the counts
  428.           measured by ppppeeeerrrrffffeeeexxxx are aggregates of the counts for all the threads.
  429.           You must multiply by the number of threads to get the total program
  430.           bandwidth.
  431.  
  432.      Memory bandwidth used (MB/s, average per process)
  433.  
  434.           This is the amount of data moved between the secondary data cache
  435.           and main memory, divided by the total program run time. The amount
  436.           of data moved is calculated as the sum of the number of secondary
  437.           data cache misses multiplied by the secondary cache line size and
  438.           the number of quadwords written back from secondary data cache
  439.           multiplied by the size of a quadword (16 bytes).  For multiprocess
  440.           programs, the resulting figure is a per-process average, since the
  441.           counts measured by ppppeeeerrrrffffeeeexxxx are aggregates of the counts for all the
  442.           threads. You must multiply by the number of threads to get the total
  443.           program bandwidth.
  444.  
  445.      MFLOPS (MB/s, average per process)
  446.  
  447.           This is the ratio of the graduated floating-point instructions and
  448.           the total program run time. Note that while a multiply-add carries
  449.           out two floating-point operations, it only counts as one
  450.           instruction, so this statistic may underestimate the number of
  451.           floating-point operations per second. For multiprocess programs, the
  452.           resulting figure is a per-process average, since the counts measured
  453.           by ppppeeeerrrrffffeeeexxxx are aggregates of the counts for all the threads. You must
  454.           multiply by the number of threads to get the total program rate.
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  467.  
  468.  
  469.  
  470.      The following statistics are computed only on R12000 CPUs:
  471.  
  472.      Cache misses in flight per cycle (average)
  473.           This is the count of event 4 (Miss Handling Table (MHT) population)
  474.           divided by cycles.  It can range between 0 and 5 and represents the
  475.           average number of cache misses of any kind that are outstanding per
  476.           cycle.
  477.  
  478.      Prefetch miss rate
  479.           This is the count of event 17 (prefetch primary data cache misses)
  480.           divided by the count of event 16 (executed prefetch instructions).
  481.           A high prefetch miss rate (about 1) is desirable, since prefetch
  482.           hits are wasting instruction bandwidth.
  483.  
  484.      A statistic is only printed if counts for the events which define it have
  485.      been gathered.
  486.  
  487.  
  488.      ----cccc _f_i_l_e
  489.           Load a cost table from _f_i_l_e (requires that ----yyyy is specified).
  490.  
  491.           This option allows you to override the internal event costs used by
  492.           the ----yyyy option. _f_i_l_e contains the list of event costs that are to be
  493.           overridden. This _f_i_l_e must be in the same format as the output
  494.           produced by the ----cccc option. Costs may be specied in units of "clks"
  495.           (machine cycles) or "nsec" (nanoseconds). You can override all or
  496.           only a subset of the default costs.
  497.  
  498.           You can also use the file ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss to override event costs.
  499.           If this file exists, any costs listed in it will override those
  500.           built into ppppeeeerrrrffffeeeexxxx. Costs supplied with the ----cccc option will override
  501.           those provided by the ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss file.
  502.  
  503.  
  504.      ----tttt   Print the cost table used for ppppeeeerrrrffffeeeexxxx ----yyyy cost estimates to ssssttttddddoooouuuutttt.
  505.  
  506.           These internal costs can be overridden by specifying different
  507.           values in the file ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss or by using the ----cccc _f_i_l_e option.
  508.           Both _f_i_l_e and ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss must use the format as provided by
  509.           the ----tttt option. It is recommended that you capture this output to a
  510.           file and edit it to create a suitable file for ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss or
  511.           the ----cccc option. You do not have to specify costs for every event,
  512.           however.  Lines corresponding to events with values you do not wish
  513.           to override may simply be deleted from the file.
  514.  
  515.  
  516. MMMMIIIIXXXXEEEEDDDD CCCCPPPPUUUU OOOOPPPPTTTTIIIIOOOONNNN
  517.      The following is an option for systems with both R10000 and R12000 CPUs.
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  533.  
  534.  
  535.  
  536.      ----TTTT   Allows experienced users to use ppppeeeerrrrffffeeeexxxx on a system of mixed CPUs.
  537.  
  538.      Although ppppeeeerrrrffffeeeexxxx cannot verify it, the specification of this option means
  539.      that you have used either ddddppppllllaaaacccceeee(1) or some other means to ensure that
  540.      the program is using either all R10000 CPUs or all R12000 CPUs.
  541.  
  542.      When used with this option, the ----yyyy option will not produce cost estimates
  543.      due to the fact that the cost estimation cannot know which type of CPU is
  544.      actually targeted.  Nothing prevents you, however, from loading a cost
  545.      table with ----cccc.  This cost table could be directly dumped from a pure-
  546.      R10000 or pure-R12000 system, depending on which CPU flavor the program
  547.      is running.
  548.  
  549.  
  550. CCCCHHHHAAAANNNNGGGGEEEE IIIINNNN BBBBEEEEHHHHAAAAVVVVIIIIOOOORRRR OOOOFFFF DDDDEEEEFFFFAAAAUUUULLLLTTTT EEEEVVVVEEEENNNNTTTTSSSS
  551.      Because of limitations of ABI/API compliance with Irix version 6.5/R10000
  552.      in the operating system counter interface, it is only possible to count
  553.      cycles and graduated instructions on counter 0.  Accordingly, when the
  554.      R12000 user specifies an event in the range 0-15 to ppppeeeerrrrffffeeeexxxx, either
  555.      through a ----eeee argument or environment variables, cycles cannot be counted
  556.      simultaneously with that event as they can on the R10000.  (ppppeeeerrrrffffeeeexxxx only
  557.      multiplexes events for the ----aaaa option, never for individually specified
  558.      events).  In these cases ppppeeeerrrrffffeeeexxxx will count event 16 (executed prefetch
  559.      instructions) as the second event.
  560.  
  561.      For similar reasons, ppppeeeerrrrffffeeeexxxx no longer remaps events 0, 15, 16, and 17 to
  562.      fit them on two (R10000) counters, since that would induce a different
  563.      behavior for identical arguments on R10000 and R12000 systems. It would
  564.      create problems when mixed-CPU systems are supported.  To be specific,
  565.      prior to 6.5.3 a user could specify:
  566.      %%%% ppppeeeerrrrffffeeeexxxx ----eeee 0000 ----eeee 11115555 aaaa....oooouuuutttt
  567.  
  568.      This would execute as if the user had specified:
  569.      %%%% ppppeeeerrrrffffeeeexxxx ----eeee 0000 ----eeee 11117777 aaaa....oooouuuutttt
  570.  
  571.      or
  572.      %%%% ppppeeeerrrrffffeeeexxxx ----eeee 11115555 ----eeee 11116666 aaaa....oooouuuutttt
  573.  
  574.      After Irix version 6.5.3, this argument combination is an error, and the
  575.      user must decide which of the equivalent (for R10000 only) forms to use.
  576.      It is the lack of equivalence for R12000 that makes this regression
  577.      necessary.
  578.  
  579. FFFFIIIILLLLEEEESSSS
  580.      ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss
  581.  
  582.  
  583. DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  584.      ppppeeeerrrrffffeeeexxxx only works on an R10000 or R12000 system.  Programs running on
  585.      mixed R1000 and R12000 CPUs are not supported, although specifying the ----TTTT
  586.      option will permit you to verify that only CPUs of the same type are
  587.      being used.  Usually, ppppeeeerrrrffffeeeexxxx prints an informative message and fails on
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  599.  
  600.  
  601.  
  602.      mixed CPU systems.
  603.  
  604.      For the ----mmmmpppp option, only binaries linked-shared are currently supported;
  605.      this is due to a dependency on lllliiiibbbbppppeeeerrrrffffeeeexxxx....ssssoooo.  The options ----ssss and ----mmmmpppp are
  606.      currently mutually exclusive.
  607.  
  608.  
  609. LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS
  610.      The signal control interface (----ssss) can control only the immediate target
  611.      process, not any of its descendants.  This makes it unusable with
  612.      multiprocess targets in their parallel regions.
  613.  
  614.  
  615. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  616.      rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5), lllliiiibbbbppppeeeerrrrffffeeeexxxx(3C), ttttiiiimmmmeeee(1), ttttiiiimmmmeeeexxxx(1)
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.